//
//  BaseChartView.h
//  JiuLe
//
//  Created by 黄鑫 on 16/9/7.
//  Copyright © 2016年 Fine. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "NSString+Helper.h"

#define SlideButtonHeighe 40    //滑动按钮高为20是因为图表的原点距离X轴为10
#define CircleDiameter 6        //圆点直径
#define RectangleWidth 8        //矩形宽

@protocol BaseChartViewDelegate <NSObject>

- (void)backIndex:(int)number withTime:(NSString *)time;

@optional
- (void)backData:(NSString *)number withTime:(NSString *)time;


@end

typedef NS_ENUM(NSUInteger, BaseChartType) {
    BaseChartTypeLineChart,     //折线图
    BaseChartTypeHistogram,     //柱状图
};

typedef NS_ENUM(NSUInteger, BaseChartShowDate) {
    BaseChartShowDateDay,     //日
    BaseChartShowDateWeek,    //周
    BaseChartShowDateAge,     //月
};

typedef NS_ENUM(NSUInteger, BaseChartShowDateType) {
    BaseChartShowDateTypePedometer,         //计步
    BaseChartShowDateTypeHeartRate,         //心率
    BaseChartShowDateTypeBreathe,           //呼吸
    BaseChartShowDateTypeSleeping,          //睡眠
    BaseChartShowDateTypeOxygen,            //血氧
    BaseChartShowDateTypeBodyTemperature,   //体温
};

@interface BaseChartView : UIView{
    float viewH;//当前视图宽
    float viewW;//当前视图高
}

@property (weak, nonatomic) id<BaseChartViewDelegate> delegate;

/**
 *  设置图表类型
 *
 *  @param baseChartType 图表类型
 */
@property (assign, nonatomic) BaseChartType                                     baseChartType;

/**
 *  设置图表显示日期
 *
 *  @param baseChartShowDate 图表日期
 */
@property (assign, nonatomic) BaseChartShowDate                                 baseChartShowDate;

/**
 *  设置图表显示的数据类型 - > 是心率的还是计步的数据图表
 *
 *  @param baseChartShowDateType 图表数据类型
 */
@property (assign, nonatomic) BaseChartShowDateType                             baseChartShowDateType;

/**
 *  设置图表X坐标
 *
 *  @param chartX 图表X坐标
 */
@property (assign, nonatomic) NSInteger                                         chartX;

/**
 *  设置图表Y坐标
 *
 *  @param chartY 图表Y坐标
 */
@property (assign, nonatomic) NSInteger                                         chartY;

/**
 *  设置图表宽
 *
 *  @param chartH 图表宽
 */
@property (assign, nonatomic) float                                             chartH;

/**
 *  设置图表宽
 *
 *  @param chartw 图表宽
 */

@property (assign, nonatomic) float                                             chartw;

/**
 *  设置图表单位比例y/yInterval轴上相邻两条横线所代表的单位距离
 *
 *  @param percentage 图表Y轴上一个像素代表的数值大小
 */
@property (assign, nonatomic) float                                             percentage;

/**
 *  设置间隔
 *
 *  @param xInterval x轴上每个行标间隔像素
 */
@property (assign, nonatomic) NSInteger                                         xInterval;

/**
 *  设置间隔
 *
 *  @param yInterval y轴上每个列标间隔像素
 */
@property (assign, nonatomic) NSInteger                                         yInterval;

/**
 *  设置X轴上列标
 *
 *  @param xAxisUnit X轴上列标
 */
@property (strong, nonatomic) NSMutableArray                                    *xAxisMark;

/**
 *  设置Y轴上行标
 *
 *  @param yAxisUnit Y轴上行标
 */
@property (strong, nonatomic) NSMutableArray                                    *yAxisMark;


/**
 *  设置X轴坐标单位
 *
 *  @param xAxis X轴上单位
 */
@property (strong, nonatomic) NSMutableArray                                    *xAxis;

/**
 *  设置Y轴上坐标单位
 *
 *  @param yAxis Y轴上单位
 */
@property (strong, nonatomic) NSMutableArray                                    *yAxis;

/**
 *  设置Y轴上坐标单位
 *
 *  @param yAxisSecondary Y轴上副单位 用于保存深度睡眠数据
 */
@property (strong, nonatomic) NSMutableArray                                    *yAxisSecondary;

//初始化
- (instancetype)initWithFrame:(CGRect)frame;

//开始绘制
- (void)startDraw;

//绘制矩形
- (void)toDrawRect:(CGRect)rectangle color:fillColor context:(CGContextRef)ctx;
@end
